# tools_lib.pyi
import numpy as np
from typing import List, overload
from numpy.typing import NDArray  # 更精确的 numpy 类型


class Tools:
    num: int
    user: str
    uv: List[str]

    @overload
    def __init__(self, num: int, user: str) -> None: ...  # 第一个构造函数重载

    @overload
    def __init__(self, uv: List[str]) -> None: ...  # 第二个构造函数重载

    def __init__(self, *args, **kwargs) -> None: ...  # 占位实现（必须）

    def join_str(self) -> str: ...

# 用 NDArray 更精确地指定 numpy 数组类型（可选，但推荐）


def filter_point_int(p1: NDArray[np.int_],
                     p2: NDArray[np.int_]) -> NDArray[np.int_]: ...


def filter_point_float(
    p1: NDArray[np.float64], p2: NDArray[np.float64]) -> NDArray[np.int_]: ...
